Frequently, broadband systems transmit television signals to subscribers of a conditional access system. Broadband systems, such as cable and satellite television systems, typically include a headend for receiving programming, or sessions, and/or data from various sources and redistributing the programming and other data through a distribution system to subscribers. The headend receives programming signals from a variety of sources, combines the programming signals from the various sources, and transmits the combined signals through the distribution system to subscriber equipment. The distribution system can include a variety of media, such as coaxial cable, fiber optic cable, and satellite links, as well as a network of distributed nodes that then transmit the programming to subscriber locations, or to a network of distributed hubs, which transmit the signals to subscriber equipment, or any combination thereof. In a cable television system, the subscriber equipment can include a cable-ready television, a cable-ready video cassette recorder (VCR), or a digital home communications terminal (DHCT) that is connected to a television, computer, or other display device.
Increasingly, the headend is receiving and transmitting programming in a digital format, for example, Moving Pictures Expert Group (MPEG) format, instead of an analog format. Transmitting programs in MPEG format is advantageous because multiple digitized programs can be combined and transmitted in, for example, 6 MHz of bandwidth, which is the same amount of bandwidth required to transmit a single analog channel or program.
MPEG transport streams include overhead information such as MPEG tables that indicate the types and location of the programming within the transport stream. In a local television system, the MPEG tables include information that is specific to that local distribution system and its particular channel line-up. MPEG as referenced in this application is described in the MPEG-1 and MPEG-2 standards. The MPEG-1 standards (ISO/IEC 11172) and the MPEG-2 standards (ISO/IEC 13818) are described in detail in the International Organization for Standardization document ISO/IEC JTC1/SC29/WG11 N (June 1996 for MPEG-1 and July 1996 for MPEG-2), which is hereby incorporated by reference. Therefore, the headend system, and the modulators in particular, must add the required MPEG table data to the outgoing bit stream.
MPEG transport streams are made up of standardized packets, each of which are 188 bytes in size. Each of the packets includes a header and a payload. Generally, the header is 4 bytes in size and the payload is 184 bytes in size, but the header can be expanded, in which case the payload is contracted by a corresponding amount. The header includes a packet identifier (PID), which is a 13-bit field that is used to identify the packet. Thus, 8,192 possible PID values can be assigned to packets in a transport stream. Certain PID values are reserved, such as PID=0 and PID=8,191, which are used to identify Program Association Tables (PAT) and stuffing packets, respectively, and will be described in greater detail hereinbelow.
Generally, a transport stream includes a plurality of elementary streams, and each elementary stream is made up of packets that have a common PID value that is different from the PID values of other elementary streams in the transport stream. An MPEG program is made up of a plurality of elementary streams. Generally, an MPEG program includes a video elementary stream, which is made up of packets having digitized video information included therein, and at least one audio elementary stream.
Generally, a transport stream includes a plurality of programs, each of which are uniquely identified by a program number. The transport stream includes a program association table (PAT) packet, which has the PID value of 0. The PAT of a transport stream maps program identities to their program number. A program corresponds to what has traditionally been called a channel, e.g., PBS, ESPN, etc. The PAT identifies the PID value of the elementary stream for the program map table (PMT) of a program included in the transport stream. A PMT for a program lists all of the PID values of the elementary streams of the program. Thus, the process of identifying a program and its contents takes place in two stages: first one uses the PAT in the PID=0 elementary stream to identify the PID of the elementary stream carrying the PMT for the program, and then in the next stage one obtains the PIDs of the elementary bit streams that make up the program from the appropriate PMT. A demultiplexer can be set to receive the identified packets that correspond to the program of interest. For proper viewing, the elementary streams must be synchronized so that the audio and video signals of the program correspond to each other.
Industry standards such as, American Television System Committee (ATSC), document A/54 (“Guide to the Use of ATSC Digital Television Standard”), which is hereby incorporated in its entirety by reference, limit the number of programs that can be included in a transport stream to 255, and the program numbers for the programs range from 1-255. Each program number is associated with a particular PMT, and the PMT has a pre-determined PID value. According to this standard, every 16th value is a PMT_PID. The next 15 PIDs after that PID value are reserved for elementary streams of that program and are not otherwise assigned. For example, the PMT_PID of program 1 is 16 and the PIDs 17-31 are reserved for elementary streams associated with program 1, the PMT_PID of program 2 is 32 and PIDs 33-47 are reserved for elementary streams associated with program 2, and so on and so forth. Thus, PIDs 16-4085 are allocated to programs 1-255, and the remaining PIDs are used for identifying other packets having content, such as, but not limited to, system management packets, audio packets, data packets and information downloaded from the internet.
The A/54 standard also specifies how certain PID values are assigned to particular elementary streams of the program. A PMT, which is associated with program number N, has a PID value of 16N, which is the base value used for defining PIDs for elementary streams associated with that program. Packets of video content are assigned to the PID value of (16N+1), as are program clock reference (PCR) packets, which are used for synchronizing the elementary streams of the program. In addition, a complete main audio channel, which includes all required voiceovers and emergency messages, is assigned the PID value of 16N+3.
The current method for allocating PIDs has several inherent flaws. Television programs can only be assigned program numbers from 1-255. As the bandwidth of cable television systems increase and as the number of channels increases, there exists a need for more than 255 program numbers. In addition, the current method wastes PID values. Each program is assigned 15 PID values, even when the program has less than 15 elementary streams. Furthermore, the current method cannot allow a program to have more than 15 elementary streams.